

#ifndef ITF_MC_HEADER
#define ITF_MC_HEADER

#ifdef __cplusplus
extern "C" {
#endif

#include "prefix_tree.h"
#include "path.h"
#include "mex.h"

typedef struct s_mc markovChain;

struct s_mc {
    double *S;
    unsigned int n_S;
    double *E;
    unsigned int n_E;
    double *ES;
    unsigned int r_ES;
    unsigned int c_ES;
    double *p;
    unsigned int r_p;
    unsigned int c_p;
};

struct samples {
    path_l **arrayPaths;
    unsigned int n;
};

struct parameters {
    unsigned int method;
    unsigned int gui;
};

void itf_mc(markovChain *mc, int nrhs, const mxArray *prhs[]);
void itf_path(struct samples *sr, int nrhs, const mxArray *prhs[]);
void free_itf_path(struct samples *sr);

void setparameters(struct parameters *param, char *parameterid, unsigned int parametervalue);
struct parameters *create_parameters();
void free_parameters(struct parameters *p);

#ifdef __cplusplus
}
#endif

#endif
